package model;

import utils.Images;

import java.awt.*;

/**
 * 生命值道具，会随机生成在柱子间，拾取后加一生命值
 */
public class LifeProps extends MovingObject implements Collision, Score {

    /**
     * size 对象大小
     * index 动画播放下标
     */
    int size = 35;
    int index = 1;

    LifeProps(Column column) {
        super(column.x, column.y, Images.lifeProps.getWidth(null), Images.lifeProps.getHeight(null));
    }

    /**
     * 判断是否和小鸟发生碰撞
     *
     * @param bird 小鸟对象
     * @return
     */
    @Override
    public boolean hit(Bird bird) {
        double s = Math.pow(Math.pow(x - bird.x, 2) + Math.pow(y - bird.y, 2), 0.5);
        return s < 37.5;
    }

    /**
     * 移动方法，和柱子同步移动
     */
    @Override
    public void step() {
        if (x - size / 2 < -width) {
            x = -width;
        } else {
            x -= 4;
        }
    }

    /**
     * 切换动画帧的方法
     */
    public void move() {
        //对index的值进行约束，防止index的值发生溢出
        if (index == 96) {
            index = 1;
        }
        Images.lifeProps = Images.lifePropsImages[(index / 6) % 8];
        index++;
    }

    /**
     * @return 每次拾取一个生命值道具，分数加十
     */
    @Override
    public int getScore() {
        return 10;
    }
}
